In virtual computing environments, backups can be created by taking snapshots of virtual disks or other data volumes. A snapshot preserves the contents of the virtual disk or data volume at a certain point-in-time. When a series of snapshots is created, for storage efficiency, subsequently created snapshots only capture the incremental changes from the prior snapshots. More specifically, as a virtual machine (VM) issues writes after a snapshot has been taken, the system software records the write data until a subsequent snapshot is taken and all such recorded write data are captured as contents of the subsequent snapshot.
Snapshots may be stored locally or in a remote site for disaster recovery purposes. Snapshots may also be stored as a combination of local and remote copies. The frequency of taking snapshots is driven by a user-specified recovery point objective (RPO). In the context of disaster recovery, RPO essentially specifies the maximum time skew permitted between the primary and secondary copies of the data. For example, a one minute RPO means that the data at the secondary site cannot be more than one minute out of date with respect to the data at the primary site. For critical applications, the RPO is much smaller than normal and thus the snapshots will need to be taken at a higher frequency. In addition, when the data transmission time from the protected site and the recovery site is considered, the frequency of snapshots will need to be increased even more.
Increasing the frequency of snapshots has associated costs. The obvious costs are increased storage costs at the recovery site and increased network usage. Another cost is increased read latency in situations where reads are performed on the snapshots, e.g., during disaster recovery.